package cool.webstudy.admin.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cool.webstudy.admin.constant.enums.CompetitionQuestionStatusEnum;
import cool.webstudy.admin.model.dto.competition.question.CreateCompetitionQuestionDTO;
import cool.webstudy.admin.model.dto.competition.question.PaginationQueryCompetitionQuestionInfoListDTO;
import cool.webstudy.admin.model.dto.competition.question.QueryCompetitionQuestionDetailInfoDTO;
import cool.webstudy.admin.model.dto.competition.question.UpdateCompetitionQuestionDTO;
import cool.webstudy.admin.model.vo.competition.question.PaginationQueryCompetitionQuestionInfoListVO;
import cool.webstudy.admin.model.vo.competition.question.QueryCompetitionQuestionRoughInfoVO;

import java.util.List;
import java.util.Map;

/**
 * @author 莫振双
 * @date 2025/2/7 22:44
 * @description: 赛题管理接口定义类
 */
public interface CompetitionQuestionService {
    /**
     * @param dto 创建赛题接口请求参数模型
     * @return Boolean 是否成功标识
     * @description: 创建赛题接口
     */
    Boolean createCompetitionQuestion(CreateCompetitionQuestionDTO dto);
    /**
     * @param dto 更新赛题接口请求参数模型
     * @return Boolean 是否成功标识
     * @description: 更新赛题接口
     */
    Boolean updateCompetitionQuestion(UpdateCompetitionQuestionDTO dto);
    /**
     * @param unCode 业务主键
     * @return QueryCompetitionQuestionDetailInfoDTO 获取赛题详情接口响应模型
     * @description: 获取赛题详情接口
     */
    QueryCompetitionQuestionDetailInfoDTO queryCompetitionQuestionDetailInfo(String unCode);
    /**
     * @param statusFlag 状态
     * @param unCode 业务主键
     * @description: 更新赛题状态接口
     */
    void updateCompetitionQuestionStatus(CompetitionQuestionStatusEnum statusFlag, String unCode);
    /**
     * @return Map<String, String> 获取赛题简要信息Map
     * @description: 获取赛题简要信息Map
     */
    Map<String, String> queryCompetitionQuestionRoughInfoMap();
    /**
     * @param dto 分页获取赛题信息列表接口请求参数模型
     * @return Page<PaginationQueryCompetitionQuestionInfoListVO> 分页获取赛题信息列表接口响应模型
     * @description: 分页获取赛题信息列表接口
     */
    Page<PaginationQueryCompetitionQuestionInfoListVO> paginationQueryCompetitionQuestionInfoList(PaginationQueryCompetitionQuestionInfoListDTO dto);
    /**
     * @return List<QueryCompetitionQuestionRoughInfoVO> 获取赛题简要信息列表接口响应模型
     * @description: 获取赛题简要信息列表接口
     */
    List<QueryCompetitionQuestionRoughInfoVO> queryCompetitionQuestionRoughInfoList();
}
